<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
        //把js代码写到body尾部
        //defer属性，实现js文件延迟加载

        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）

        // 3.JavaScript 的数据类型有哪些？（5）
        //简单数据类型: number  String Symbol Boolean null undefined
        //复杂数据类型  Object Array function 

        // 4.如何进行数据类型的判断？（5）
        // typeof
        // instanceof
        //Object.prototype.toString.call

        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
        //  null是空的对象
        //  undefined 是声明了变量 未赋值 也就是未定义的

        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
        //   ==的意思是值相等，他们都是空值所以相等 返回true
        //   ===的意思是值相等并且数据类型也要相等，而null和undefined只是值相等，他们的类型是不相等的，
        //   所以返回false

        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
        //continue 退出当前循环，执行下一个循环
        //break 是把整个循环都停止掉

        // 8.如何判断字符串内是否包含指定字符？（5）
             // indexOf
            // lastIndexOf
        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
        //  concat         不会修改原数组
        //    join         不会修改原数组
        //  reverse        会修改原数组
        //  indexof        不会修改原数组
        //  Lastindexof    不会修改原数组
        //  slice          不会修改原数组
        //  splice         会修改原数组
        //  includes       不会修改原数组
        //  push           会修改原数组
        //  pop            会修改原数组
        //  unshift        会修改原数组
        //  shift          会修改原数组
        // 10. 请写出下面语句的输出结果：（5）
        // var bar = true,
        //     number = 0;
        // console.log(bar + 0);////////1
        // console.log(bar + "xyz");////"truexyz"
        // console.log(bar + true);/////2
        // console.log(+true);//////////1
        // console.log(!'bluej');///////false
        // console.log(number++);///////0
        // console.log(++number);///////2
        // console.log(number);/////////2

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        // window.prompt("请输入目标时间");




        // 13.把下面数组成员排序打乱；（5）
        // let arr = [10, 20, 30, 40, 50, 60];
        // let arr1 = [];
        // for (let i = 0; i < arr.length; i++) {
        //     let num = Math.floor(Math.random() * 6);
        //     if (arr1.includes(arr[num]) == false){
        //         arr1.push(arr[num]);
        //     }else{
        //         i--;
        //     }
        // }
        // console.log(arr1);

        // 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）

        // let arr1 = [];
        // for (let i = 1; i < 6; i++) {
        //     let num = Math.floor(Math.random() * 48 + 10);
        //     if (num % num == 0 && num % 1 == 0) {
        //         arr1.push(num);
        //     } else {
        //         i--;
        //     }
        // }
        // console.log(arr1);

        // 14. 将多个数组进行去重合并；（10）
        // var arr1 = [1, 2, 3],
        //     arr2 = [2, 3, 4, 5];

        // let arr3 = arr1.concat(arr2)
        // let arr4 = []
        // for (let i = 0; i < arr3.length; i++) {
        //     if (arr4.indexOf(arr3[i]) == -1){
        //         arr4.push(arr3[i]);
        //     }
        // }
        //   console.log(arr4);

        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
        let arr = [1, 2, 3, "melon", 4, "melon", 2, 4, "melon"]
        let arr1 = [];
        for (let i = 0; i < arr.length; i++) {
            if (arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i]) && arr1.indexOf(arr[i]) == -1) {
                arr1.push(arr[i]);
            }
        }
        console.log(arr1);

        // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        // let arr = [{
        //         name: "111",
        //         sex: "boy",
        //         age: 18,
        //         count: 20
        //     },
        //     {
        //         name: "222",
        //         sex: "girl",
        //         age: 17,
        //         count: 30
        //     },
        //     {
        //         name: "333",
        //         sex: "boy",
        //         age: 16,
        //         count: 40
        //     },
        //     {
        //         name: "444",
        //         sex: "girl",
        //         age: 15,
        //         count: 50
        //     },
        //     {
        //         name: "555",
        //         sex: "boy",
        //         age: 20,
        //         count: 60
        //     },
        //     {
        //         name: "666",
        //         sex: "girl",
        //         age: 13,
        //         count: 70
        //     },
        //     {
        //         name: "777",
        //         sex: "boy",
        //         age: 14,
        //         count: 80
        //     }
        // ]
        // let newArr = [];
        // for (let i = 0; i < arr.length; i++) {
        //     if (arr[i].age < 18) {
        //         newArr.push(arr[i])
        //         // console.log(arr[i].age);
        //     }
        // }
        // for (let i = 0; i < newArr.length; i++) {
        //     newArr[i].count = newArr[i].count*newArr[i].count;
        // }
        // console.log(newArr);
    </script>
</body>

</html>